package com.ljh.ioc.controller;

import com.ljh.ioc.config.UserConfig;
import com.ljh.ioc.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

/**
 * @author: Themberfue
 * @date: 2025/2/17 19:52
 * @description:
 */
// ? 使用 Controller 注解后才可从 Bean 里获取该类
// ? 否则抛出 NoSuchBeanDefinitionException 异常
// * 几乎所有注解都支持自定义命名
@Controller
//@Controller("controller")
public class HelloController {
    // * 通过属性注入
//    @Autowired
//    public UserService us;
//    @Autowired
//    public UserConfig uc;

    // * 通过构造方法注入
    // * 存在一个构造方法时，会自动注入
    // * 存在多个构造方法时，若没有默认构造方法，则会报错，除非通过 @Autowired 注入
//    public UserService us;
//    public UserConfig uc;
//
////    public HelloController() {
////    }
//
//    @Autowired
//    public HelloController(UserService us, UserConfig uc) {
//        this.us = us;
//        this.uc = uc;
//    }
//
//    public HelloController(UserService us) {
//        this.us = us;
//    }

    // * 通过 setter 方法注入
    public UserService us;
    public UserConfig uc;

    @Autowired
    public void setUs(UserService us) {
        this.us = us;
    }
    @Autowired
    public void setUc(UserConfig uc) {
        this.uc = uc;
    }

    public void print () {
        System.out.println("Hello Controller");
        us.print();
        uc.print();
    }
}
